#include "impls.h"


std::pair<cv::Rect, cv::RotatedRect> get_rect_by_contours(const cv::Mat& input) {
    /**
     * 要求：
     * 使用findCountours函数找出输入图像（彩色图像）中的矩形轮廓，并且返回它的外接矩形，以及
     * 最小面积外接矩形。所需要的函数自行查找。
     * 
     * 通过条件：
     * 运行测试点，你找到的矩形跟答案一样就行。
    */
    std::pair<cv::Rect, cv::RotatedRect> res;
    
    //分开存储
    cv::Rect R;
    cv::RotatedRect RR;
    //二值化图像->dst
    cv::Mat gray, dst;
    cv::cvtColor(input,gray,CV_RGB2GRAY,0);
    cv::threshold(gray,dst,50,255,CV_THRESH_BINARY);
    //找到轮廓
    std::vector<std::vector<cv::Point>> r;
    std::vector<cv::Vec4i> hierarchy;
    cv::findContours(dst,r,hierarchy, CV_RETR_TREE,cv::CHAIN_APPROX_TC89_KCOS);

    for(int i=0;i<r.size();i++){
        if(hierarchy[i][3]!=-1&&hierarchy[i][2]==-1){
            R=cv::boundingRect(r[i]);
            
        }
    }
    for(int i=0;i<r.size();i++){
        if(hierarchy[i][3]!=-1&&hierarchy[i][2]==-1){
            RR=cv::minAreaRect(r[i]);
            
        }
    }
    
    // IMPLEMENT YOUR CODE HERE
    res=std::make_pair(R,RR);
    return res;
}